<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于嵌入式實(shí)時(shí)操作系統的現場(chǎng)總線(xiàn)網(wǎng)關(guān)的設計

基于嵌入式實(shí)時(shí)操作系統的現場(chǎng)總線(xiàn)網(wǎng)關(guān)的設計

作者: 時(shí)間:2012-08-21 來(lái)源:網(wǎng)絡(luò ) 收藏

opt=opt;
stk= (unsigned int * ) Ptos;
*--stk= (unsigned int) task;
*- -stk=0;
*--stk=0,
*--stk=0,
*--stk=0,
*--stk=0;
*--stk=0;
*--stk=0;
*--stk=0;
*--stk=0;
*--stk=0;
*--stk=0;
*--stk=0;
*--stk=0 (unsigned int) Pdata;
*--stk= (SVCMODE | OxO);
*--stk= (SVCMODE | OxO);
return( (void*) stk);
在 OSTaskCreate( )或 OSTaskCreateEXt( )中調用該函數來(lái)初始化任務(wù)的堆棧,返回堆棧指針STK。
(三)OS_CPU_A.S
μC/OS-Ⅱ的移植工作的重點(diǎn)和難點(diǎn)主要體現在O_CPU_A.S文件的實(shí)現上,主要編寫(xiě)下面四個(gè)匯編語(yǔ)言函數:
OSStanHighRdy( )
OSCtxSw( )
OSIntCtxSw( )
OSTickISR( )
其中最困難的工作又集申在OSIntCtxSw( )和OSTickISR( )兩個(gè)函數,因為這兩個(gè)函數不僅和相關(guān)硬件定時(shí)器、中斷積存器的設置有關(guān),而且集中體現了移植的思路。下面分別介紹(具體代碼限于篇幅不詳細列出)。
1.OSStartHighRdy( )
此函數只在多任務(wù)啟動(dòng)時(shí)由OSStart( )函數調用一次,功能是從最高優(yōu)先級任務(wù)的TCB中得到該任務(wù)的堆棧指針sp,并用該指針恢復CPU現場(chǎng),使得最高優(yōu)先級任務(wù)處于就緒狀態(tài)。
2.OSCtxSw( )
該函數實(shí)現了任務(wù)級的任務(wù)切換,流程如圖4所示。任務(wù)級的任務(wù)切換是通過(guò)發(fā)軟中斷指令來(lái)完成的,軟中斷矢量指向該函數。在μC/OS-Ⅱ系統中,如果一個(gè)任務(wù)調用了某個(gè)函數而使得更高優(yōu)先級任務(wù)進(jìn)入了就緒狀態(tài),系統就會(huì )通過(guò)發(fā)SWI來(lái)找到OSCtxSw( );在該任務(wù)的最后,系統會(huì )調用OSShed( )將最高優(yōu)先級任務(wù)的地址加載到OSTCBHighRdy中,再調用OS_TASK_SW( )來(lái)執行軟中斷調用OSCtxSw( )進(jìn)行任務(wù)切換。
3.0SIntCtxSw( )
該函數實(shí)現了中斷級任務(wù)切換,流程如圖4(b)所示。在ISR中,可能會(huì )引起任務(wù)的切換,如果需要進(jìn)行任務(wù)切換,則在ISR的最后通過(guò)0S_IntEXit( )調用OSIntCtxSw( )實(shí)現中斷級任務(wù)切換。此函數和OSCtxSw( )函數類(lèi)似,不同的是該函數進(jìn)行的是中斷級任務(wù)切換,在系統進(jìn)入中斷時(shí),CPU現場(chǎng)己被保存過(guò)了,因此在該函數中不再進(jìn)行CPU現場(chǎng)保護,只需對堆棧指針做相應的調整即可。
4.OSTickISR( )
該函數用來(lái)實(shí)現定時(shí)器時(shí)鐘中斷處理,但在本系統的設計過(guò)程中,把定時(shí)器中斷設為IRQ中斷模式,并且IRQ中斷包括好多中斷源。因引,把該函數作為IRQ中斷的ISR,再根據中斷號來(lái)調用具體的各個(gè)中斷服務(wù)程序(如定時(shí)器中斷、MAC中斷等)。
另外,在系統的啟動(dòng)文件中,需要建立每種異常的異常向量表,并強制ARM處理器狀態(tài)位svc管理模式。
五、總 結
本設計在s3c451Ob的硬件平臺上成功移植了μC/OS-Ⅱ,并且移植了TCP/IP協(xié)議棧LwIP,實(shí)現了WorldFIP現場(chǎng)總線(xiàn)和Internet之間的相互通信,使得WorldFIP現場(chǎng)總線(xiàn)成為真正開(kāi)放的工業(yè)現場(chǎng)總線(xiàn)。在網(wǎng)關(guān)的整體設計中,由于系統比較大,任務(wù)數較多,用實(shí)時(shí)內核來(lái)管理調度這些任務(wù),要消耗較多的CPU使用率和系統的內存,具有一定的局限性,但在CPU足夠快,內存足夠大的情況下,使用網(wǎng)關(guān)設計,在保證了工業(yè)現場(chǎng)總線(xiàn)的實(shí)時(shí)性和可靠性的基礎上,更有利于系統的集成度和再次開(kāi)發(fā)。

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)

上一頁(yè) 1 2 3 4 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>